package v1

import "net/http"

// ServeMuxAdapter 适配 http.ServeMux 到 v1.Router 接口
type ServeMuxAdapter struct {
	*http.ServeMux
}

// 实现 v1.Router 接口的 Handle 方法
func (a *ServeMuxAdapter) Handle(path string, handler http.Handler) bool {
	a.ServeMux.Handle(path, handler)
	return true // 始终返回 true，因为 http.ServeMux 允许重复注册（覆盖）
}

// 实现 v1.Router 接口的 Handle 方法
func (a *ServeMuxAdapter) HandleFunc(path string, handler http.HandlerFunc) bool {
	a.ServeMux.HandleFunc(path, handler)
	return true // 始终返回 true，因为 http.ServeMux 允许重复注册（覆盖）
}

// 实现 v1.Router 接口的 Delete 方法（空实现，因为 http.ServeMux 不支持删除）
func (a *ServeMuxAdapter) Delete(path string) {
	// http.ServeMux 没有提供删除路由的方法，此处可根据需要做日志或其他处理
}

// 实现 v1.Router 接口的 Mount 方法（空实现，或根据需要转发）
func (a *ServeMuxAdapter) Mount(prefix string, subRouter Router) bool {
	return false // 不支持子路由挂载
}

// 实现 v1.Router 接口的 Unmount 方法（空实现）
func (a *ServeMuxAdapter) Unmount(prefix string) bool {
	return false // 不支持卸载子路由
}

// 实现 http.Handler 接口的 ServeHTTP 方法（直接转发给 http.ServeMux）
func (a *ServeMuxAdapter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	a.ServeMux.ServeHTTP(w, r)
}

// 创建适配器实例
func NewServeMuxAdapter(mux *http.ServeMux) *ServeMuxAdapter {
	return &ServeMuxAdapter{mux}
}
